// 引入一个加密模块
var crypto = require('crypto');
// 登录和注册需要的 User 类
var User = require('../models/user.js');


// 如果没有登录，无法访问发表和退出页面
/*function checkLogin(req,res,next) {
  if( !req.session.user ) {
    req.flash('error','未登录');
    res.redirect('/login');
  }
  next();
}

// 如果已登录，无法访问登录和注册页面
function checkNotLogin(req,res,next) {
  if(req.session.user) {
    req.flash('error','已登录');
    // 返回之前的页面
    res.redirect('back');
  }
  next();
}*/


/* GET home page. */
/*router.get('/', function(req, res, next) {
 res.render('index', { title: 'Express' });
 });*/

module.exports = function (app) {
  // 首页
  app.get('/',function (req,res) {
    res.render('index',{
      title:'首页',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    });
  })
  // 注册
  app.get('/reg',function (req,res) {
    res.render('reg',{
      title:'注册',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    });
  })
  app.post('/reg',function (req,res) {
    var name = req.body.name;
    var password = req.body.password;
    var password_re = req.body['password-repeat'];

    var email = req.body.email;
    if( name == '' || password == '' || password_re == '' || email =='' ) {
      req.flash('error','请正确填写信息');
      return res.redirect('/reg');
    }

    // 检查两次密码是否一致
    if(password_re != password){
      req.flash('error','两次输入的密码不一致');
      return res.redirect('/reg'); // 返回注册
    }
    // 生成一下密码的 md5 值
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('hex');

    // 将注册信息传入 user 对象
    var newUser = new User({
      name:name,
      password:password,
      email:req.body.email
    });

    // 检查用户名是否已经存在
    User.get(newUser.name,function (err,user) {
      // 如果发生错误，跳转回首页
      if(err){
        req.flash('error','都是我的错');
        return res.redirect('/');
      }
      // 如果存在重复的用户名
      if(user){
        req.flash('error','用户名已存在');
        return res.redirect('/reg');
      }
      // 如果不存在则新增用户
      newUser.save(function (err,user) {
        if(err){
          req.flash('error','全是我的错');
          return res.redirect('/reg');
        }
        // 用户信息存入 session
        req.session.user = newUser;
        req.flash('success','注册成功');
        res.redirect('/');
      });
    });
  });
  // 登录
  app.get('/login',function (req,res) {
    res.render('login',{
      title:'登录',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    });
  })
  // 登录行为
  app.post('/login',function (req,res) {
    // 生成 md5 密码
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('hex');

    // 检查用户名是否存在
    User.get(req.body.name,function (err,user) {
      if(!user){
        req.flash('error','用户名不存在');
        return res.redirect('/login');
      }
      // 检查密码是否一致
      if( user.password != password ){
        req.flash('error','用户名与密码不匹配');
        return res.redirect('/login');
      }
      // 都匹配了，将用户信息存入 session
      req.session.user = user;
      req.flash('success','登陆成功');
      res.redirect('/');
    })

  })

  // 发表
  app.post('/login',function (req,res) {
    res.render('post',{title:'发表'});
  })
  app.post('.post',function (req,res) {
    
  })
  // 退出
  app.get('/logout',function (req,res) {
    // 清除 session
    req.session.user = null;
    // 给用户一个提示信息
    req.flash('success','成功退出');
    // 跳转到首页
    res.redirect('/');
  })
}
